﻿using System;
using System.Collections.Generic;
using Castle.ActiveRecord;
using Castle.Components.Validator;
using NHibernate.Mapping;

namespace SGP.Model
{
    /// <summary>
    /// Classe detalhes do patrimonio 
    /// </summary>
    [ActiveRecord(Table = "pdt_patrimonio_det",Lazy = true)]
    public partial class PatrimonioDet :  ActiveRecordBase<PatrimonioDet>
    {
        private int _pdtIdPatrimonio;
        private int _pdtIdTipo;
        private Patrimonio _patrimonio;

        /// <summary>
        /// Codigo do patrimonio
        /// </summary>
        [PrimaryKey(PrimaryKeyType.Foreign , "pdt_id_patrimonio")]
        public virtual int PdtIdPatrimonio { get { return this._pdtIdPatrimonio; } }

        //[PrimaryKey(PrimaryKeyType.Foreign, "pdt_id_tipo")]
        //public int PdtIdTipo { get { return this._pdtIdTipo; } }

        /// <summary>
        /// Cor do patrimonio
        /// </summary>
        [Property("pdt_nm_cor")]
        public virtual string PdtNmNmCor { get; set; }

        /// <summary>
        /// Largura do Patrimonio
        /// </summary>
        [Property("pdt_largura"),ValidateDecimal("O campo não está no formato adequado") ]
        public virtual decimal PdtLargura { get; set; }

        /// <summary>
        /// Altura do Patrimonio
        /// </summary>
        [Property("pdt_altura"), ValidateDecimal("O campo não está no formato adequado")]
        public virtual decimal PdtAltura { get; set; }

        /// <summary>
        /// Profundidade do patrimonio
        /// </summary>
        [Property("pdt_profundidade"), ValidateDecimal("O campo não está no formato adequado")]
        public virtual decimal PdtProfundidade { get; set; }

        /// <summary>
        /// Preco de compra do patrimonio
        /// </summary>
        [Property("pdt_preco_compra"), ValidateDecimal("O campo não está no formato adequado")]
        public virtual decimal PdtPrecoCompra { get; set; }

        [Property("pdt_preco_venda"), ValidateDecimal("O campo não está no formato adequado")]
        public virtual decimal PdtPrecoVenda { get; set; }

        [Property("pdt_dt_aquisicao"), ValidateDate("O campo não está no formato adequado")]
        public virtual DateTime PdtDtAquisicao { get; set; }

        [Property("pdt_nm_modelo")]
        public virtual string PdtNmModelo { get; set; }

        [Property("pdt_obs_patrimonio")]
        public virtual string PdtDsPatrimonio { get; set; }

        [OneToOne]
        public virtual Patrimonio Patrimonio { get { return this.Patrimonio; } }

        [HasMany(typeof(TipoPatrimonio), Table = "tpp_tipo_patrimonio", ColumnKey = "tpp_id_patrimonio")]
        public virtual IList<TipoPatrimonio> TipoPatrimonio { get; set; }
    }
}
